←
▼
▲
によって、setting フォルダーに入っている、
の setting_default フォルダの中の全 .vbs ファイル
1.
3.
%APPDATA%\Scripts フォルダの中の全 .vbs ファイル (*2)
環境変数 myhome_mem は、必要に応じて設定してください。
[ スタート | コンピューター ] を右クリック [ プロパティ | 詳細設定 | 環境変数 ]
[ ユーザー環境変数 ] に設定してください。
(*1)
の setting フォルダの中の全 .vbs ファイル
4.
%APPDATA%
Scripts
Xxx_setting.vbs
← 2. PC全体の設定 (*2)
setting フォルダーは、vbslib の設定を記述した vbs ファイルを格納するフォルダーです。
scriptlib\vbslib\setting フォルダーなどの中に、スクリプト・ファイルを配置し、関数定義を
記述することで設定を行います。
メイン.vbs
(任意のフォルダー)
setting_default
setting
← 1. デフォルト設定(通常、編集しません)
Xxx_setting_default.vbs
Xxx_setting.vbs
← 4. 上記(任意のフォルダー)の中の設定
2.
%myhome_mem%\prog\scriptlib\setting_mem フォルダの中の全 .vbs ファイル (*1)
(*2)
コマンドプロンプトを開いて、echo %APPDATA%\Scripts と入力すると、実際の
パスが分かります。
%myhome_mem%\prog\scriptlib\setting_mem
Xxx_setting.vbs
← 3. USB メモリーに入っている PC全体の設定
環境変数を使用
スクリプトを実行すると、はじめに
すべての vbs ファイルの内容を実行します。 つまり、vbs ファイルの名前は、自由に付ける
ことができます。 この実行によって、関数が定義されます。 setting フォルダーは、複数あり
ますが、下記の 1. 2. 3. 4. 5. の順番で実行します。 同じ関数を他の .vbs ファイルでも定義して
いるときは、後で定義したものが優先されます。 4 の setting フォルダーにある設定が最も
テスト
関連
vbslib
Windows 7, 10 : C:\Users\user1\AppData\Roaming
Windows XP : C:\Document and Settings\user1\Application Data
2.が設定されていない PC を一時的に使うときのため
vbslib
Xxx_setting.vbs
setting
← setting フォルダー、下記の 1. 2. 3. 4. があるフォルダー
← 設定ファイル
← 5. スクリプトの中の include や ExecuteGlobal
優先されます。 ただし、
や
を呼び出すと定義は変更されます。
5.
や
スクリプトの中の
下記の 1. 2. 3. 4. 5. の順番で実行し、後で定義したものが優先されます。
設定ファイルの中では、vbs_inc_sub.vbs ファイルで定義されている関数だけを使用できます。
ソース
1. 2. 3. 4. のファイルがあるフォルダーのパスは、
にあります。
←
▼
▲
や
などを呼び出すと関数定義は変更されます。
Main 関数を呼び出す前に関数定義を変えるには、
に変更後の関数定義が入ったスクリプトを配置します。
Main 関数を呼び出した後は、
変更する前の関数も呼び出すときは、
を使ってください。
テスト スクリプトから呼ばれる関数の定義を変更するときは、include するとよいでしょう。
←
▼
▲
設定を操作する関数
←
▼
▲
Sub CheckSettingFunctionExists( FunctionName as string )
setting フォルダーにあるスクリプトに書くべき関数があることをチェックします。
【引数】
FunctionName
定義されているかどうかをチェックする関数の名前
との違いは、関数が無ければ下記のようなエラーが発生することです。
<ERROR msg="vbslib の setting フォルダーにある .vbs ファイルに関数が定義されてい
ません。" function="Setting_getDiffCmdLine"/>
関連
ソース
→ vbs_inc_sub.vbs
サンプル
CheckSettingFunctionExists "Setting_getNaturalDocsPerlPath"
natural_docs_path = Setting_getNaturalDocsPerlPath()
設定関数をチェックしてから、呼び出します。
←
▼
▲
Function GetExistPathInSetting( Paths as array of string, SettingFuncName as string )
Paths 配列に格納されているパスのうち、最初にファイルが存在するパスを返します。
【引数】
Paths
SettingFuncName
パスの配列
本関数を呼び出している関数の名前
返り値
ファイルが存在するパス
Paths の要素に Empty を含んでいてもエラーにはなりません。
もし、該当するファイルが存在しなければ、setting フォルダーにある vbs ファイルを修正する
ように、警告が表示されます。
GetExistPathInSetting は、setting フォルダーの中で定義する関数の中から呼び出せる関数です。
サンプル
Function Setting_getEditorCmdLine( i )
paths = Array( _
g_sh.ExpandEnvironmentStrings( "%ProgramFiles%\sakura\sakura.exe" ), _
g_sh.ExpandEnvironmentStrings( "%windir%\notepad.exe" ) )
exe = GetExistPathInSetting( paths, "Setting_getEditorCmdLine" )
→ Setting_getEditorCmdLine のサンプル (src)
の呼び出しも検討してください。
ソース
→ vbs_inc_sub.vbs
←
▼
▲
Sub EditAndRunScript( ScriptPath as string, IsKeepThisProcessIfRun as boolean )
VBScript ファイルをテキスト・エディターで開いて、編集後に実行します。
【引数】
ScriptPath
IsKeepThisProcessIfRun
VBScript ファイルのパス。 Empty =
False=実行開始したら現在のプロセスを終了する
(src)
サンプル
Sub EditAndRunThisScript()
EditAndRunScript Empty, False
End Sub
本関数を呼び出すと、
VBScript ファイル開きます。
に登録したテキスト・エディターを使って
テキスト・エディターを閉じたら、編集した VBScript ファイルを実行するかどうかを確認する
ウィンドウが開きます。 実行するを選んだら、実行を開始して、IsKeepThisProcessIfRun
= False なら、現在実行中のプロセスは終了します。 つまり、新しい VBScript ファイルの
プロセスに切り替わります。 IsKeepThisProcessIfRun = True なら、実行を開始して、
本関数から戻ります。
実行することをキャンセルすると選んだら、そのまま本関数から戻ります。
→ T_EditAndRunScript フォルダ
テスト
←
▼
▲
Function Setting_getExistSettingPath( StepPath as string ) as string
に存在する1つのファイルまたはフォルダーのパスを返します。
AssertExist g_vbslib_ver_folder + "setting_default"
AssertExist g_vbslib_ver_folder + "setting"
setting_path = Setting_getExistSettingPath( "MySetting.xml" )
If not IsEmpty( setting_path ) Then
'// ...
End If
Assert setting_path = g_vbslib_ver_folder + "setting"
【引数】
StepPath
存在をチェックするファイルまたはフォルダーの相対パス
サンプル
返り値
見つかったファイルまたはフォルダーの絶対パス、または、Empty
配列にあるフォルダーに、ファイルまたはフォルダーが存在するかどうかを
チェックし、最も優先するパスを返します。 g_vbslib_setting_paths 配列の後の方の要素ほど優先します。
"MySetting.xml"
setting_path
setting フォルダーの2つに MySetting.xml ファイルがあるとき、優先する方のファイルのパスを
setting_path 変数に代入しています。
テスト
ソース
→ T_Setting.vbs
T_Setting_getExistSettingPath
→ vbs_inc_sub.vbs
←
▼
▲
Dim g_vbslib_setting_paths( ) as string
のパスの配列。
g_vbslib_ver_folder + "setting_default"
env("%myhome_mem%\prog\scriptlib\setting_mem")
env(""%APPDATA%\Scripts"")
g_vbslib_ver_folder + "setting"
配列の要素は、以下の通りです。
%myhome_mem% が定義されている場合のみ
ソース
→ vbs_inc_sub.vbs
関連
setting フォルダーに存在する1つのファイルのパスを返します。
←
▼
▲
Function Setting_getIncludePathes( IncludeType as string ) as array of string
scriptlib フォルダーの中で、インクルードする .vbs ファイルのパスの配列を返します。
Function Setting_getIncludePathes( IncludeType )
Setting_getIncludePathes = Array(_
"vbslib.vbs", "sample_lib.vbs" )
End Function
(src)
scriptlib フォルダに共通な環境変数の設定も、Setting_getIncludePathes 関数の中で行います。
関連
scriptlib\vbslib\setting\vbs_inc_setting.vbs
'--- start of parameters for vbslib include -------------------------------
g_Vers.Add "IncludeType", "TypeA"
IncludeType は通常 Empty ですが、下記のように scriptlib ヘッダで、IncludeType 変数の値を
設定すると、IncludeType 引数に値が渡ります。 この値に応じて、インクルードするモジュール
を選択することができます
Function Setting_getIncludePathes( IncludeType )
If IncludeType = "TypeA" Then
Setting_getIncludePathes = Array( "vbslib.vbs", "sample_lib.vbs" )
End If
End Function
サンプル
参考
パスは、vbs_inc_sub.vbs ファイルがあるフォルダからの相対パスです。
vbc_inc_400.vbs ファイルは、指定しなくてもインクルードされます。
コールツリー
vbslib.vbs
sample_lib.vbs
TypeA
TypeA
参考
ソース
→ vbs_inc_setting.vbs
←
▼
▲
Sub Setting_onAfterInclude()
すべてのモジュールをインクルードした後にコールバックされる関数。
あるフォルダの中(scriptlib フォルダごと)にあるすべてのスクリプトの既定の環境変数を
設定することなどを行います。
コールツリー
で返される .vbs ファイルをインクルードした後で行う処理を、
Setting_onAfterInclude 関数に記述してください。 Setting_onAfterInclude 関数の中では、
.vbs ファイルで定義されている関数などを呼び出すことができます。
非推奨
Setting_onAfterInclude を使うと暗黙的に処理が行われるので、推奨されません。
と
を使って、あるフォルダー(scriptlib フォルダーがある
フォルダーなど)の中にあるすべてのスクリプトに共通の処理を、インクルードして、呼び
出してください。
Sub main()
include SearchParent( "Common.vbs" )
Common_main
End Sub
メイン.vbs
Common.vbs
Sub Common_main() '// Setting_onAfterInclude 関数の代わり
set_ "VAR", "value"
End Sub
代わりに
参考
←
▼
▲
Sub Setting_openFolder( in_FolderOrFilePath )
フォルダーを開きます。
この関数の内容を変えることで、エクスプローラー以外のファイラーを使うことが出来ます。
in_FolderOrFilePath 引数にファイルのパスが渡されたときは、そのファイルを選択状態にしてくだ
さい。 ファイラーがその処理に対応していないときは、ファイルを選択状態にしなくても構いません。
【引数】
in_FolderOrFilePath
フォルダー、またはファイルのパス
参考
(src)
ソース
→ PC_setting_default.vbs
開くファイルのパスをテストでチェックするとき
Setting_openFolder 関数を呼び出したときに、フォルダーを開かずに、開こうとしたフォルダーのパス
を echo 表示するには、下記のコードのようにしてください。
include SearchParent( "scriptlib\vbslib\ArgsLog\SettingForTest_pre.vbs" )
include SearchParent( "scriptlib\vbslib\ArgsLog\SettingForTest.vbs" )
SetVar "Setting_openFolder", "echo" '// echo 出力に変更する
Setting_openFolder "FolderA"
参考
→ scriptlib\vbslib\ArgsLog\SettingForTest_pre.vbs
→ scriptlib\vbslib\ArgsLog\SettingForTest.vbs
アプリケーションは、Setting_openFolder 関数を呼び出すのではなく、
を呼び出して
ください。
←
▼
▲
Function Setting_getEditorCmdLine( i as integer or string ) as string
テキスト エディターを開くコマンドラインを返します。
【引数】
i
返り値
パス(文字列)、または、コマンドラインの種類(数値)
コマンドライン文字列, i に対応していないときは Empty
テキストエディタのパスのみ返す。 "" で囲まないこと
i=0 のとき
C:\Windows\notepad.exe
返り値の例:
返り値の例:
"C:\Windows\notepad.exe" "%1"
開くパスを %1 にした、テキストエディタを起動するコマンドラインを返す。
i=1 のとき
開くパスを %1、開いた後に検索するキーワードを %2 にした、テキストエディタを
起動するコマンドラインを返す。 %2 に対応できないときは、%1 だけ使ったコマンド
ラインを返します。
"C:\Program Files\search_open\search_open.exe" "%1#%2"
返り値の例:
i=3 のとき
返り値の例:
"C:\Windows\notepad.exe" "%1"
"C:\Windows\notepad.exe" "%1"
返り値の例:
i=2 のとき
返り値の例:
"C:\Program Files\sakura\sakura.exe" -Y=%L "%1"
開くパスを %1、開く行番号を %L にした、テキストエディタを起動するコマンドライン
を返す。 %L に対応できないときは、%1 だけ使ったコマンドラインを返します。
i が文字列のとき
i は、開こうとするテキストファイルの絶対/相対パスと、行番号、または開いた後に
検索するキーワードであるとして、実際に実行するコマンドラインを返します。
上記「使用サンプル」を参照。
i の例:
C:\FolderA\FileA.txt
行番号を含む i の例:
C:\FolderA\FileA.txt(100)
キーワードを含む i の例:
C:\FolderA\FileA.txt#FuncA
参考
使用サンプル
テスト
→ T_Open_1.vbs
関連
参考
のソース
→ _src\Test\tools\T_SyncFiles\SettingForTest.vbs
Setting_getEditorCmdLine 関数の中で
を呼び出すスクリプトを
参考
include (関数定義を上書き)すると、テキスト エディターで開こうとしたファイル
のパスを、ArgsLog.txt に追記するようになります。 ArgsLog.txt の内容を
チェックすれば、開くファイルのパスが正しいかどうかをチェックできます。
ソース
→ PC_setting_default.vbs
←
▼
▲
Function Setting_getDiffCmdLine( i as integer ) as string
テキスト ファイルの比較(Diff)を実行するコマンドラインのテンプレートを返します。
【引数】
i
返り値
コマンドラインの種類
コマンドライン文字列、Empty=対応できない
Diff のパスのみ返す。 "" で囲まないこと
i=0 のとき
C:\Program Files\Rekisa\Rekisa.exe
例:
例:
"C:\Program Files\Rekisa\Rekisa.exe" "%1" "%2"
比較する2つのファイルのパスを %1, %2 にした、Diff を起動するコマンド
ラインを返す。
i=2 のとき
比較する3つのファイルのパスを %1, %2, %3 にした、Diff を起動する
コマンドラインを返す。 対応できないときは、Empty を返す。
"C:\Program Files\Rekisa\Rekisa.exe" "%1" "%2" "%3"
例:
i=3 のとき
関連
i=21 のとき
"C:\Program Files\Rekisa\Rekisa.exe" -Y+1=%L
-ActiveFile="%1" "%1" "%2"
例:
比較する2つのファイルのパスを %1, %2 にして、%1 の行番号を
%L にした、Diff を起動するコマンドラインを返す。
比較する2つのファイルのパスを %1, %2 にして、%2 の行番号を
%L にした、Diff を起動するコマンドラインを返す。
例:
"C:\Program Files\Rekisa\Rekisa.exe" -Y+1=%L
-ActiveFile="%2" "%1" "%2"
i=22 のとき
"C:\Program Files\Rekisa\Rekisa.exe" -Y+1=%L
-ActiveFile="%1" "%1" "%2" "%3"
例:
比較する3つのファイルのパスを %1, %2, %3 にして、%1 の行番号を
%L にした、Diff を起動するコマンドラインを返す。
i=31 のとき
比較する3つのファイルのパスを %1, %2, %3 にして、%2 の行番号を
%L にした、Diff を起動するコマンドラインを返す。
例:
"C:\Program Files\Rekisa\Rekisa.exe" -Y+1=%L
-ActiveFile="%2" "%1" "%2" "%3"
i=32 のとき
"C:\Program Files\Rekisa\Rekisa.exe" -Y+1=%L
-ActiveFile="%2" "%1" "%2" "%3"
例:
比較する3つのファイルのパスを %1, %2, %3 にして、%3 の行番号を
%L にした、Diff を起動するコマンドラインを返す。
i=33 のとき
"C:\Program Files\WinMerge\WinMergeU.exe" "%1" "%2"
例:
参考
Diffを実行するコマンドラインを返す
→ _src\Test\tools\T_SyncFiles\SettingForTest.vbs
Setting_getDiffCmdLine 関数の中で
を呼び出すスクリプトを include (関数定義
参考
を上書き)すると、Diff ツールで開こうとしたファイルのパスを、ArgsLog.txt に追記するように
なります。 ArgsLog.txt の内容をチェックすれば、開くファイルのパスが正しいかどうかを
チェックできます。
ソース
→ PC_setting_default.vbs
→ _src\Test\tools\T_SyncFiles\SettingForTest_pre.vbs
例:
include SearchParent( "_src\Test\tools\T_SyncFiles\SettingForTest_pre.vbs" )
include SearchParent( "_src\Test\tools\T_SyncFiles\SettingForTest.vbs" )
old_setting = GetVar( "Setting_getDiffCmdLine" )
SetVar "Setting_getDiffCmdLine", "ArgsLog" '// ログへの記録に変更する
start GetDiffCmdLine( "file1.txt", "file2.txt" )
AssertFC "ArgsLog.txt", "Files\DiffAnswer.txt" '// ログをチェックする
SetVar "Setting_getDiffCmdLine", old_setting '// ログへの記録をやめる
下記の vbs は、g_Setting_getEditorCmdLine などの関数定義も上書きして、ArgsLog.txt に追記
します。
←
▼
▲
Function Setting_getFolderDiffCmdLine( i as integer ) as string
フォルダーの比較(Diff)を実行するコマンドラインのテンプレートを返します。
【引数】
i
返り値
コマンドラインの種類
コマンドライン文字列、Empty=対応できない
Diff のパスのみ返す。 "" で囲まないこと
i=0 のとき
C:\Program Files\DF\DF.exe
例:
例:
"C:\Program Files\DF\DF.exe" "%1" "%2"
比較する2つのフォルダーのパスを %1, %2 にした、Diff を起動するコマンドラインを返す。
i=2 のとき
比較する3つのフォルダーのパスを %1, %2, %3 にした、Diff を起動して比較を実行する
コマンドラインを返す。 対応できないときは、Empty を返す。
"C:\Program Files\DF\DF.exe" "%1" "%2" "%3"
例:
i=3 のとき
参考
i=30〜37のとき
比較する3つのフォルダーのパスを %1, %2, %3 にした、Diff を起動するコマンドラインを返す。
ただし、i=30 のときは比較を実行しない(起動後にユーザーが開始することはできる)。
i = 33, 35, 36 のときは、2つの比較を実行する。 i の 1の位は、%1=1, %2=2, %3=4 の論理和。
つまり、33=%1と%2、34=%1と%3、36=%2と%3 を比較する。 起動後にユーザーが 3つの比較を
することはできる。
対応できないときは、Empty を返す。
関連
Diffを実行するコマンドラインを返す
ソース
→ PC_setting_default.vbs
例:
"C:\Program Files\master2\master2.exe" "%1" "%2" "%3" -e=5
→ _src\Test\tools\T_SyncFiles\SettingForTest.vbs
Setting_getFolderDiffCmdLine 関数の中で
を呼び出すスクリプトを
参考
include (関数定義を上書き)すると、Diff ツールで開こうとしたファイルのパスを表示します。
表示したログをチェックすれば、開くファイルのパスが正しいかどうかをチェックできます。
→ _src\Test\tools\T_SyncFiles\SettingForTest_pre.vbs
例:
include SearchParent( "_src\Test\tools\T_SyncFiles\SettingForTest_pre.vbs" )
include SearchParent( "_src\Test\tools\T_SyncFiles\SettingForTest.vbs" )
SetVar "Setting_getFolderDiffCmdLine", "DiffCUI" '// DiffCUI を起動するようにする
start GetDiffCmdLine( "file1.txt", "file2.txt" )
AssertFC "ArgsLog.txt", "Files\DiffAnswer.txt" '// ログをチェックする
下記の vbs は、g_Setting_getEditorCmdLine などの関数定義も上書きして、ArgsLog.txt に追記
します。